package xkp.lesson2;

import java.util.*;

public class Test1 {
    public static void main(String[] args) {
        /*******Collection********/
        //1、ArrayList
        //2、LinkedList

        //4、HashSet

        /*******Map********/
        //3、HashMap
        //5、迭代
        HashSet<String> hashSet = new HashSet<>();
        //HashSet要添加的数据本质上存入HashMap的key中
        //value使用  private static final Object PRESENT = new Object();充数
        hashSet.add("122");

        //hashcode()与equals()的区别与联系

        LinkedHashMap<String,Object> linkedHashMap = new LinkedHashMap<>();
        linkedHashMap.put("obj1",new Object());
        linkedHashMap.put("obj2",new Object());
        linkedHashMap.put("obj3",new Object());
        //注意:HashMap是无序的(扩容时，hash值会重新计算)
        //LinkedHashMap是有序的
        //LinkedHashMap为什么是有序的（此处感兴趣的同学可以查资料）
        //LinkedHashMap底层在HashMap的基础上维护了一个双向链表
        //该双向链表负责维护顺序 顺序默认为插入的顺序

        LinkedHashSet<String> linkedHashSet = new LinkedHashSet<>();
        TreeSet<String> treeSet = new TreeSet<>();
        //TreeMap底层数据结构直接是一颗红黑树
        TreeMap<String,Object> treeMap = new TreeMap<>();
        treeMap.put("123",new Object());


        //HashTable与HashMap对比
        //HashTable与HashMap用法一致，底层数据结构也基本一致
        //但是HashTable是线程安全
        //HashMap非线程安全
        Hashtable<String,Object> hashtable = new Hashtable<>();
        hashtable.put("123",new Object());
        hashtable.remove("123");
    }
}
